﻿#region Copyright (c) 2000-2008 Developer Express Inc.
/*
{*******************************************************************}
{                                                                   }
{       Developer Express .NET Component Library                    }
{       AgDataGrid                                 }
{                                                                   }
{       Copyright (c) 2000-2008 Developer Express Inc.              }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{   The entire contents of this file is protected by U.S. and       }
{   International Copyright Laws. Unauthorized reproduction,        }
{   reverse-engineering, and distribution of all or any portion of  }
{   the code contained in this file is strictly prohibited and may  }
{   result in severe civil and criminal penalties and will be       }
{   prosecuted to the maximum extent possible under the law.        }
{                                                                   }
{   RESTRICTIONS                                                    }
{                                                                   }
{   THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES           }
{   ARE CONFIDENTIAL AND PROPRIETARY TRADE                          }
{   SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS   }
{   LICENSED TO DISTRIBUTE THE PRODUCT AND ALL ACCOMPANYING .NET    }
{   CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY.                 }
{                                                                   }
{   THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED      }
{   FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE        }
{   COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE       }
{   AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT  }
{   AND PERMISSION FROM DEVELOPER EXPRESS INC.                      }
{                                                                   }
{   CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON       }
{   ADDITIONAL RESTRICTIONS.                                        }
{                                                                   }
{*******************************************************************}
*/
#endregion Copyright (c) 2000-2008 Developer Express Inc.

using System.Windows.Controls;
using System.Windows;
using DevExpress.AgDataGrid.Internal;
using System;
using System.Windows.Automation.Peers;
using DevExpress.AgDataGrid.UIAutomation;
namespace DevExpress.AgDataGrid {
	public class AgColumnCellBase : ContentControl, IFrameworkElement {
		AgDataGridColumn column;
		double prevColumnWidth = double.NaN;
		public AgColumnCellBase(AgDataGridColumn column) {
			if(column == null) {
				throw new ArgumentNullException("column");
			}
			this.column = column;
		}
		public AgDataGridColumn Column { get { return column; } }
		protected virtual double ColumnWidth {
			get { return Column.ActualWidth; }
		}
		protected override Size MeasureOverride(Size availableSize) {
			Size res;
			if(ColumnWidth > 0) {
				res = base.MeasureOverride(new Size(ColumnWidth, availableSize.Height));
				res.Width = ColumnWidth;
			} else
				res = base.MeasureOverride(availableSize);
			this.prevColumnWidth = ColumnWidth;
			res.Height = Math.Ceiling(res.Height);
			return res;
		}
		#region IFrameworkElement Members
		Size IFrameworkElement.Measure(Size availableSize) {
			return MeasureOverride(availableSize);
		}
		void IFrameworkElement.InvalidateMeasureEx() {
			if(ColumnWidth != this.prevColumnWidth) {
				InvalidateMeasure();
			}
		}
		#endregion
		protected override AutomationPeer OnCreateAutomationPeer() {
			return new AgFrameworkElementAutomationPeer(this);
		}
	}
}
